feat(projects): finish multi-repository workspace flows - #6602
Conversation
81ee2e0 to
20dbe5a
Compare
Cassandra adversarial/security review — needs workReviewed exact diff P1 — A repository signer can cause a project owner to enroll the signer's repository (confidence: 100)Evidence:
Trigger scenario: Mallory publishes her own valid kind Required direction: restore an authorization proof before absorption/healing (same owner or project owner named as repo maintainer), or never auto-sign inferred membership. P1 — A forged project-channel claim can redirect channel-created issues into an attacker's repository (confidence: 100)Evidence:
Trigger scenario: Mallory publishes a listed kind Required direction: retain the authoritative project↔repo join and reject ambiguous claims; a project announcement alone must not prove ownership of an arbitrary channel. P1 — Every post-create validation/publish failure leaves an unlinked channel behind (confidence: 100)Evidence:
Trigger scenario: the cached project is stale, the live-head fetch times out, the relay rejects kind Required direction: preflight before creation and compensate by deleting the channel on every failure before successful project binding (including cleanup-failure reporting). Coverage / residual riskChecked security and adversarial lenses over: trust boundaries in unsigned/signed project↔repo inference, channel-to-repo issue routing, concurrent project mutation, partial-failure cleanup, agent owner-control publication, and project creation ordering. I did not exercise a live relay/Desktop workflow at this exact head, so there may be additional UI/runtime failures in the ~4.1k-line PR; the three defects above are code-verifiable and do not depend on runtime behavior. |
Complete project-home defaults, category-specific creation, responsive grouping, and project-wide task and commit views across every repository. Signed-off-by: Thomas Petersen <thomasp@squareup.com> Co-authored-by: Thomas Petersen <thomasp@squareup.com>
Give project workspace sheets explicit auxiliary priority so Tasks, Reviews, Commits, Files, and People remain accessible without discarding an open conversation thread. Signed-off-by: Thomas Petersen <thomasp@squareup.com> Co-authored-by: Thomas Petersen <thomasp@squareup.com>
Make workspace-sheet precedence independent of whether the active thread uses a focus drawer, split pane, or narrow auxiliary layout. Signed-off-by: Thomas Petersen <thomasp@squareup.com> Co-authored-by: Thomas Petersen <thomasp@squareup.com>
Suppress the browser-default outline on the programmatically focused drawer while retaining focus indicators on its interactive controls. Signed-off-by: Thomas Petersen <thomasp@squareup.com> Co-authored-by: Thomas Petersen <thomasp@squareup.com>
Route non-DM sidebar icons through the shared channel glyph so project-home channels render with their project folder mark. Signed-off-by: Thomas Petersen <thomasp@squareup.com> Co-authored-by: Thomas Petersen <thomasp@squareup.com>
Collapse the context rail before a workspace drawer enters so the sheet keeps a fixed width, and hide the sidebar-style resize guide without removing resizing. Signed-off-by: Thomas Petersen <thomasp@squareup.com> Co-authored-by: Thomas Petersen <thomasp@squareup.com>
Use the stateful drawer affordance in both wide and narrow Projects layouts so context controls match the rest of the project surfaces. Signed-off-by: Thomas Petersen <thomasp@squareup.com> Co-authored-by: Thomas Petersen <thomasp@squareup.com>
Co-authored-by: Thomas Petersen <thomasp@squareup.com> Signed-off-by: Thomas Petersen <thomasp@squareup.com>
047395e to
19fe55e
Compare
Gauge review — correctness / testing / reliability — PR #6602 (pt7)Reviewed exact head Verdict: needs-work (blocked on F1 rebase; F2 is the one code finding I'd fix before merge)F1 — P1, confidence 100 — Stale base ancestry: PR is CONFLICTING and missing three pt6 fixesSame mechanism as earlier parts of this stack. #6600 was squash-merged into shared base
F2 — P2, confidence 75 — Aggregated Commits panel silently masks per-repository failures once any repository has commits
but the failure presentation is only reachable inside the empty branch: Trace: project with repos A (loads, has commits) and B (fails — relay down, clone URL missing). F3 — P2, confidence 75 — Canvas-seeding branch has no test that would fail if it were wrongNew branching in The only unit test ( F4 — P2, confidence 75 — Multi-repository commit aggregation (merge/sort/attribution) is untested
F5 — P2, confidence 75 —
|
Co-authored-by: Wrench <0eabe6ea5758c1e4c5b68cea4ac42b32c479072883cb28da8110b4a47c32b9a1@buzz.block.builderlab.xyz> Signed-off-by: Wrench <0eabe6ea5758c1e4c5b68cea4ac42b32c479072883cb28da8110b4a47c32b9a1@buzz.block.builderlab.xyz>
Cassandra adversarial/security re-review — head
|
Co-authored-by: Wrench <0eabe6ea5758c1e4c5b68cea4ac42b32c479072883cb28da8110b4a47c32b9a1@buzz.block.builderlab.xyz> Signed-off-by: Wrench <0eabe6ea5758c1e4c5b68cea4ac42b32c479072883cb28da8110b4a47c32b9a1@buzz.block.builderlab.xyz>
Cassandra adversarial/security re-review — head
|
Gauge re-review — PR #6602 at exact head
|
Co-authored-by: Wrench <0eabe6ea5758c1e4c5b68cea4ac42b32c479072883cb28da8110b4a47c32b9a1@buzz.block.builderlab.xyz> Signed-off-by: Wrench <0eabe6ea5758c1e4c5b68cea4ac42b32c479072883cb28da8110b4a47c32b9a1@buzz.block.builderlab.xyz>
Gauge review — round 3 at exact head
|
c5f60a2
into
projects-channel-first-pt5-navigation-requests
- seed new project homes with a built-in operational canvas while preserving custom templates and None - make category create actions open the matching project-aware modal and keep selection presentation type-specific - aggregate Tasks and Commits across every repository with responsive project/repository grouping and a repository Overview tab This is the final part of the channel-first Projects stack, based on - focused project template, work-item aggregation, and overview-context tests: 16/16 passed - Desktop unit suite: 5,455/5,455 passed - E2E-mode Desktop build passed - TypeScript, Biome, and differential file-size checks passed - full pre-push gate passed - create a project, inspect its canvas, and exercise Tasks/Commits across a project with several repositories - healthy signals: populated project canvas, one chronological commit list with repository attribution, and complete task aggregation - failure signals: missing canvas, single-repository-only counts, duplicate repository groups, or category actions opening the wrong flow; mitigate by reverting this PR --------- Signed-off-by: Thomas Petersen <thomasp@squareup.com> Signed-off-by: Wrench <0eabe6ea5758c1e4c5b68cea4ac42b32c479072883cb28da8110b4a47c32b9a1@buzz.block.builderlab.xyz> Co-authored-by: Wrench <0eabe6ea5758c1e4c5b68cea4ac42b32c479072883cb28da8110b4a47c32b9a1@buzz.block.builderlab.xyz> Signed-off-by: Matt Toohey <contact@matttoohey.com>
## Summary Project workspace sheets now slide in from the right as an independent layer over an open conversation thread instead of replacing the thread or rendering inside its panel. Closing the sheet restores the unchanged thread, Escape applies only to the topmost surface, and the covered thread's resize divider no longer leaks through the overlay. ### Related issue Related: #6602. No matching issue found. ### Testing - `pnpm --dir desktop exec biome check src/features/channels/ui/RightAuxiliaryPane.tsx tests/e2e/project-commit-detail.spec.ts` - `pnpm exec playwright test tests/e2e/project-commit-detail.spec.ts --project=smoke --grep "project workspace sheet stays independent from an open thread"` - Pre-push desktop formatting, file-size, typecheck, and unit-test checks --------- Signed-off-by: Thomas Petersen <thomasp@squareup.com>
Summary
This is the final part of the channel-first Projects stack, based on #6600.
Testing
Post-Deploy Monitoring & Validation